package com.jingtao.controller;

import com.jingtao.pojo.User;
import com.jingtao.service.UserService;
import com.jingtao.vo.PageResult;
import com.jingtao.vo.SysResult;
import org.apache.ibatis.annotations.Update;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@CrossOrigin
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/findAll")
    public List<User> findAll(){

        return userService.findAll();
    }
    /**
     * URL地址：/user/login
     * 请求类型：post
     * 参数：  JSON串 username/password
     * 返回值： SysResult对象
     * */
    @PostMapping("/login")
    public SysResult login(@RequestBody User user){
        //返回值一个字符串 token
        String token = userService.login(user);
        if(token == null){
            return SysResult.fail();
        }
        return SysResult.sucess(token);
    }

    /*
    * 业务说明：
    * 1、/user/list
    * 2、请求类型：GET
    * 3、参数接收：后台使用PageResult对象接收
    * 4、返回值：SysResult<PageResult>
    * */
    @GetMapping("/list")
    public SysResult getUserList(PageResult pageResult){//三条数据
        //业务查询总数，分页条数
        pageResult = userService.getUserList(pageResult);
        return SysResult.sucess(pageResult);//五条数据
    }

    /*
     * 业务：实现用户状态的修改
     * 参数：/user/status/{id}/{status}
     * 返回值:SysResult对象
     * 类型： put 类型
     * */
    @PutMapping("/status/{id}/{status}")
    public SysResult updateStatus(User user){
        userService.updateStatus(user);
        return SysResult.sucess();
    }

    /*
     * 业务：实现用户状态的修改
     * URL：/user/addUser
     * 参数：使用User对象接收
     * 返回值:SysResult对象
     * 类型： post 类型
     * */
    @PostMapping("/addUser")
    public SysResult addUser(@RequestBody User user){
        userService.addUser(user);
        return SysResult.sucess();
    }

    /**
     * 根据ID查询数据库
     * URL:/user/{id}
     * 参数：id
     * 请求类型: GET
     * 返回值: SysResult对象
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public SysResult findUserById(@PathVariable Integer id){
        User user =  userService.findUserById(id);
        return SysResult.sucess(user);
    }

    /**
     * 根据ID修改数据库
     * URL:/user/updateUser
     * 参数：User对象
     * 请求类型: Put
     * 返回值: SysResult对象
     * @param user
     * @return
     */

    @PutMapping("/updateUser")
    public SysResult updateUser(@RequestBody User user){
        userService.updateUser(user);
        return SysResult.sucess();
    }

    /**
     * 根据ID删除数据库
     * URL:/user/deleteUser
     * 参数：id
     * 请求类型: Delete
     * 返回值: SysResult对象
     * @param id
     * @return
     */
    @DeleteMapping("/{id}")
    public SysResult deleteUser(@PathVariable Integer id){

            userService.deleteUser(id);
            return SysResult.sucess();


    }
}
